package com.gidgabs.modules.api.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.gidgabs.common.utils.ReturnJson;
import com.gidgabs.dto.TbUserDto;
import com.gidgabs.modules.entity.TbUser;

import java.util.List;
import java.util.Map;

/**
 * Created by wuye on 2017/11/24.
 */
public interface TbUserService extends IService<TbUser> {

    TbUser queryByMobile(String mobile);

    /**
     * 查询用户列表
     */
    List<TbUser> queryList(Map<String, Object> map);

    void update(TbUser tbyser);

    void updatePsByUserId(TbUser tbyser);

    Page<TbUser> queryPageList(Page<TbUser> pageUtil, Map<String, Object> map);

    TbUser queryById(Integer id);

    TbUser queryObject(TbUser user);

    List<TbUser> queryListObject(TbUser user);

//    void deleteBatch(Long[] userIds);
//
    TbUser foundById(Long userId);

    void save(TbUser tbUser);

    void updateByUserCode(TbUser tbUser);



//
//    TbUser selectById(Long id);
//
    /**
     * 用户登录
     *
     * @param mobile   手机号
     * @param password 密码
     * @return 返回用户ID
     */
    Integer login(String mobile, String password);

    TbUser queryOpenId(String openid);

    /**
     * 获得一个TbUser对象,以参数TbUser对象中不为空的属性作为条件进行查询
     *
     * @param obj
     * @return
     */
    List<TbUserDto> selectTbUserByUserName(TbUser obj);

    /**
     * 查询用户 根据类型
     * @param pageSize
     * @param pageNo
     * @param chooseType
     * @return
     */
    ReturnJson<TbUserDto> queryList(Integer pageSize, Integer pageNo, Integer chooseType) ;


    TbUser queryByEmail(String email);

    /**
     * 通过邮箱登录
     * @param email
     * @param password
     * @return
     */
    TbUser loginEmail(String email, String password);


    /**
     * 通过TbUser的id获得TbUser对象
     *
     * @param id
     * @return
     */
    TbUser selectTbUserById(Integer id);

}

